/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package prjtgl.controler.recruteur;

import java.sql.Time;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.zkoss.bind.annotation.AfterCompose;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.ContextParam;
import org.zkoss.bind.annotation.ContextType;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Sessions;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.Selectors;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.Div;
import org.zkoss.zul.Html;
import org.zkoss.zul.Label;
import prjtgl.metier.Application;
import prjtgl.metier.comptes.Membre;
import prjtgl.metier.comptes.Recruteur;
import prjtgl.metier.comptes.interactions_utilisateur.DemandeContact;
import prjtgl.metier.comptes.interactions_utilisateur.Signalement;
import prjtgl.metier.comptes.profil_utilisateur.DomaineExpertise;
import prjtgl.metier.comptes.profil_utilisateur.poste.Experience;
import prjtgl.metier.paiement.Paiement;
import prjtgl.util.SessionUtilisateur;

/**
 *
 * @author Adrien
 */
public class ProfilMembre  extends SelectorComposer {
    
    InboxData info = new InboxData();
    
    @Wire
    Div name;
    
    @Wire
    Label currentSociete,nbRelations,domaines,profil,disponibilite,societeRecruteur;
    
    
    @AfterCompose
    public void afterCompose(@ContextParam(ContextType.VIEW) Component view){
        Selectors.wireComponents(view, this, false);
        
         Membre m;
        
        if(Sessions.getCurrent().getAttribute("contact")!=null){
            m =  (Membre)Sessions.getCurrent().getAttribute("contact");
            Sessions.getCurrent().removeAttribute("contact");
            info.target=m;
        }else{
            m=info.target;
        }
        
        
        Recruteur recruteur = (Recruteur)SessionUtilisateur.getUtilisateur();
        
        String strDomaines="";
        
        currentSociete.setValue( m.obtenirSocieteActuelle());
        societeRecruteur.setValue(recruteur.getSociete().getNom());
        nbRelations.setValue(" "+m.listerContact().size());
        for(DomaineExpertise d : m.getDomaines()){
            strDomaines+=d.getIntitule()+"  ";
        }
        domaines.setValue(strDomaines);
        profil.setValue(m.getProfil().getIntitule());
        if(m.getDisponibilite()!=null){
            disponibilite.setValue(m.getDisponibilite().obtenirIntitule());   
        }
        
        name.appendChild(new Html("<h1>"+m.getNom().toUpperCase()+" \t "+m.getPrenom()+"</h1>"));
    }
    
    @Command
    public void abus(){
         Recruteur recruteur = (Recruteur)SessionUtilisateur.getUtilisateur();
         Signalement s = new Signalement();
         
         s.setDate(new Date());
         s.setDescription("  Member Profil ");
         s.setSignalant(recruteur);
         s.setSignale(info.target);
         
         s.creerSignalement();
    }
    
     @Command
    public void contacter(){
         Recruteur recruteur = (Recruteur)SessionUtilisateur.getUtilisateur();
        if(recruteur.getPorteMonnaie()!=null && recruteur.getPorteMonnaie().getCredit()>0){
            recruteur.getPorteMonnaie().payer();
            recruteur.getPorteMonnaie().updatePorteMonnaie();
            
            Paiement p=new Paiement();
            p.setDate(new Date());
            p.setMembreRecherche(info.target);
            p.setPorteMonnaie(recruteur.getPorteMonnaie());
            p.creerPaiment();
        }
    }
    
    
    
    public InboxData getInfo() {
        return info;
    }
    
    
    
    public class InboxData{
        List<Experience> sesExperiences = new ArrayList<Experience>();
        List<Membre> sesContacts = new ArrayList<Membre>();
                
        public Membre target=null;
        
        public InboxData() {
            
            
            if(Sessions.getCurrent().getAttribute("contact")!=null){
                System.out.println(Sessions.getCurrent().getAttribute("contact"));
                target =  (Membre)Sessions.getCurrent().getAttribute("contact");
                Sessions.getCurrent().removeAttribute("contact");
            }
            
           
            initData();  // TODO FOR TESTING
            
        }
        
        private void initData() {
            
            sesExperiences.addAll(target.getExperiences());
            sesContacts.addAll(target.listerContact());
            
        }
        
        public List<Experience> getSesExperiences(){
            return sesExperiences;
        }
        
        public List<Membre> getSesContacts(){
            return sesContacts;
        }
    }
   
}

